home *** CD-ROM | disk | FTP | other *** search
-
- /*© Copyright 1988-1992 UserLand Software, Inc. All Rights Reserved.*/
-
-
- #include <iac.h>
- #include <menusharing.h>
- #include "appletinternal.h"
- #include "appletops.h"
- #include "appletmenuops.h"
- #include "appletmenu.h"
-
-
-
- MenuHandle hdlapplemenu, hdlfilemenu, hdleditmenu;
-
- MenuHandle hdlfontmenu, hdlsizemenu, hdlstylemenu, hdljustifymenu;
-
-
- static boolean fontmenuchecker (MenuHandle hmenu, short itemnumber) {
-
- register boolean fl;
- bigstring bs;
- short fontnum;
-
- getmenuitem (hmenu, itemnumber, bs);
-
- GetFNum (bs, &fontnum);
-
- fl = (fontnum == (**app.appwindow).selectioninfo.fontnum);
-
- checkmenuitem (hmenu, itemnumber, fl);
-
- enablemenuitem (hmenu, itemnumber);
-
- return (true);
- } /*fontmenuchecker*/
-
-
- static boolean sizemenuchecker (MenuHandle hmenu, short itemnumber) {
-
- register short checkeditem;
- register short fontsize;
- register short itemsize;
- register short style;
- register short fontnum;
-
- fontsize = (**app.appwindow).selectioninfo.fontsize;
-
- switch (fontsize) {
-
- case -1: /*no consistent size across selection*/
- checkmenuitem (hmenu, itemnumber, false);
-
- goto L1; /*skip to determining if it's a real font or not*/
-
- case 9:
- checkeditem = point9item;
-
- break;
-
- case 10:
- checkeditem = point10item;
-
- break;
-
- case 12:
- checkeditem = point12item;
-
- break;
-
- case 14:
- checkeditem = point14item;
-
- break;
-
- case 18:
- checkeditem = point18item;
-
- break;
-
- case 24:
- checkeditem = point24item;
-
- break;
-
- case 36:
- checkeditem = point36item;
-
- break;
-
- case 48:
- checkeditem = point48item;
-
- break;
-
- case 72:
- checkeditem = point72item;
-
- break;
-
- default:
- checkeditem = pointcustomitem;
-
- break;
- } /*switch*/
-
- checkmenuitem (hmenu, itemnumber, itemnumber == checkeditem);
-
- L1:
-
- fontnum = (**app.appwindow).selectioninfo.fontnum;
-
- if (fontnum == -1) { /*no consistent font across selection*/
-
- stylemenuitem (hmenu, itemnumber, 0); /*plain*/
-
- return (true);
- }
-
- itemsize = -1;
-
- switch (itemnumber) {
-
- case point9item:
- itemsize = 9;
-
- break;
-
- case point10item:
- itemsize = 10;
-
- break;
-
- case point12item:
- itemsize = 12;
-
- break;
-
- case point14item:
- itemsize = 14;
-
- break;
-
- case point18item:
- itemsize = 18;
-
- break;
-
- case point24item:
- itemsize = 24;
-
- break;
-
- case point36item:
- itemsize = 36;
-
- break;
-
- case point48item:
- itemsize = 48;
-
- break;
-
- case point72item:
- itemsize = 72;
-
- break;
-
- } /*switch*/
-
- style = 0;
-
- if (itemsize != -1)
- if (RealFont (fontnum, itemsize))
- style = outline;
-
- stylemenuitem (hmenu, itemnumber, style);
-
- return (true);
- } /*sizemenuchecker*/
-
-
- static boolean stylemenuchecker (MenuHandle hmenu, short itemnumber) {
-
- register boolean flchecked = false;
- tyselectioninfo x = (**app.appwindow).selectioninfo;
-
- switch (itemnumber) {
-
- case plainitem:
- flchecked = x.flplain;
-
- break;
-
- case bolditem:
- flchecked = x.flbold;
-
- break;
-
- case italicitem:
- flchecked = x.flitalic;
-
- break;
-
- case underlineitem:
- flchecked = x.flunderline;
-
- break;
-
- case outlineitem:
- flchecked = x.floutline;
-
- break;
-
- case shadowitem:
- flchecked = x.flshadow;
-
- break;
-
- } /*switch*/
-
- checkmenuitem (hmenu, itemnumber, flchecked);
-
- return (true);
- } /*stylemenuchecker*/
-
-
- static boolean justifymenuchecker (MenuHandle hmenu, short itemnumber) {
-
- register tyjustification justification = (**app.appwindow).selectioninfo.justification;
- register short checkeditem = -1;
-
- switch (justification) {
-
- case leftjustified:
- checkeditem = leftjustifyitem;
-
- break;
-
- case centerjustified:
- checkeditem = centerjustifyitem;
-
- break;
-
- case rightjustified:
- checkeditem = rightjustifyitem;
-
- break;
-
- case fulljustified:
- checkeditem = fulljustifyitem;
-
- break;
-
- case unknownjustification:
- checkmenuitem (hmenu, itemnumber, false);
-
- return (true);
-
- } /*switch*/
-
- checkmenuitem (hmenu, itemnumber, itemnumber == checkeditem);
-
- return (true);
- } /*justifymenuchecker*/
-
-
- static checkfontsizestyle (void) {
-
- register hdlappwindow hw = app.appwindow;
- tyselectioninfo x;
-
- if (hw == nil) /*no windows open*/
- return;
-
- x = (**hw).selectioninfo;
-
- if (!x.fldirty) /*nothing to do*/
- return;
-
- (*app.setselectioninfocallback) ();
-
- x = (**hw).selectioninfo; /*get updated flags*/
-
- if (x.flcansetfont)
- visitonemenu (fontmenu, &fontmenuchecker);
-
- if (x.flcansetsize)
- visitonemenu (sizemenu, &sizemenuchecker);
-
- if (x.flcansetstyle)
- visitonemenu (stylemenu, &stylemenuchecker);
-
- if (x.flcansetjust)
- visitonemenu (justifymenu, &justifymenuchecker);
- } /*checkfontsizestyle*/
-
-
- void adjustmenus (void) {
-
- register boolean flchanges = false;
- register hdlappwindow ha = app.appwindow;
- register boolean flwindow = ha != nil;
- register MenuHandle hmenu;
- register boolean flsavable = !app.notsaveable;
- tyselectioninfo x;
-
- if (flwindow)
- flchanges = (**ha).flmadechanges;
-
- hmenu = hdlfilemenu;
-
- if (hmenu != nil) {
-
- setmenuitemenable (hmenu, newitem, flsavable);
-
- setmenuitemenable (hmenu, openitem, flsavable);
-
- setmenuitemenable (hmenu, closeitem, flwindow);
-
- setmenuitemenable (hmenu, saveitem, flchanges && flsavable);
-
- setmenuitemenable (hmenu, saveasitem, flwindow && flsavable);
-
- setmenuitemenable (hmenu, revertitem, flchanges && flsavable && ((**ha).fnum != 0));
-
- enablemenuitem (hmenu, pagesetupitem);
-
- setmenuitemenable (hmenu, printitem, flwindow);
-
- enablemenuitem (hmenu, quititem);
- }
-
- hmenu = hdleditmenu;
-
- if (hmenu != nil) {
-
- if (flwindow) {
-
- checkfontsizestyle ();
-
- x = (**app.appwindow).selectioninfo;
- }
- else
- clearbytes (&x, longsizeof (x)); /*set all flags to 0*/
-
- setmenuitemenable (hmenu, fontitem, x.flcansetfont);
-
- setmenuitemenable (hmenu, sizeitem, x.flcansetsize);
-
- setmenuitemenable (hmenu, styleitem, x.flcansetstyle);
-
- setmenuitemenable (hmenu, justifyitem, x.flcansetjust);
-
- if (x.flcansetsize) {
-
- hmenu = hdlsizemenu;
-
- enablemenuitem (hmenu, point9item);
-
- enablemenuitem (hmenu, point10item);
-
- enablemenuitem (hmenu, point12item);
-
- enablemenuitem (hmenu, point14item);
-
- enablemenuitem (hmenu, point18item);
-
- enablemenuitem (hmenu, point24item);
-
- enablemenuitem (hmenu, point36item);
-
- enablemenuitem (hmenu, point48item);
-
- enablemenuitem (hmenu, point72item);
-
- /*
- enablemenuitem (hmenu, pointupitem);
-
- enablemenuitem (hmenu, pointdownitem);
- */
-
- enablemenuitem (hmenu, pointcustomitem);
- }
-
- if (x.flcansetstyle) {
-
- hmenu = hdlstylemenu;
-
- enablemenuitem (hmenu, plainitem);
-
- enablemenuitem (hmenu, bolditem);
-
- enablemenuitem (hmenu, italicitem);
-
- enablemenuitem (hmenu, underlineitem);
-
- enablemenuitem (hmenu, outlineitem);
-
- enablemenuitem (hmenu, shadowitem);
- }
-
- if (x.flcansetjust) {
-
- hmenu = hdljustifymenu;
-
- enablemenuitem (hmenu, leftjustifyitem);
-
- enablemenuitem (hmenu, centerjustifyitem);
-
- enablemenuitem (hmenu, rightjustifyitem);
-
- enablemenuitem (hmenu, fulljustifyitem);
- }
- }
- } /*adjustmenus*/
-
-
- void initmenus (void) {
-
- installmenu (applemenu, &hdlapplemenu);
-
- if (hdlapplemenu != nil)
- AddResMenu (hdlapplemenu, 'DRVR');
-
- installmenu (filemenu, &hdlfilemenu);
-
- installmenu (editmenu, &hdleditmenu);
-
- (*app.insertmenucallback) ();
-
- installhierarchicmenu (fontmenu, &hdlfontmenu);
-
- if (hdlfontmenu != nil)
- AddResMenu (hdlfontmenu, 'FONT');
-
- installhierarchicmenu (sizemenu, &hdlsizemenu);
-
- installhierarchicmenu (stylemenu, &hdlstylemenu);
-
- installhierarchicmenu (justifymenu, &hdljustifymenu);
-
- DrawMenuBar ();
- } /*initmenus*/
-
-
-